import 'dart:io';

import 'package:flutter/material.dart';
import 'package:r_upgrade/r_upgrade.dart';

import '../../../model/base_model.dart';
import '../../../model/initapp_model.dart';
import '../../../utils/tools/contrast_tool.dart';
import '../../../utils/tools/localstorage_tool.dart';
import '../../../utils/widget/dialog_widget.dart';
import '../../../utils/widget/toast_widget.dart';

/// 检查是否需要更新app
/// * [context] 上下文
/// * [isAndroid] bool|必填|是否为安卓平台
Future<Map> checkisUpdate(BuildContext context, bool isAndroid) async {
  // 获取本地app版本号
  String version = await InitAppModel.getPlatformInfo();

  // 保存系统版本号
  LocalStorage.setStringItem("version", version);

  // 获取线上app版本号及下载地址
  Map result = await BaseModel().reqAppEdition(context);

  // 检查结果
  Map checkResult = {"isUpdate": false, "downloadURL": null, "jumpFunc": null};

//  print(result);

  if (result != null) {
    //print("已获取更新数据");
    // 安卓平台下当前版本与线上版本进行对比
    if (isAndroid) {
      // 检查android平台是否存在更新
      if (Contrast.contrastVersion(version, result["androidVersion"])) {
        // 存储android下载地址
        await LocalStorage.setStringItem(
            "appUpdateUrl", result["androidDownloadURL"]);

        // 编辑返回值
        checkResult["isUpdate"] = true;
        checkResult["downloadURL"] = result["androidDownloadURL"];
        checkResult["callback"] = () {
          Dialogs.confirmDialog(context,
              content: "新版本已经上线，是否更新？",
              confirmCallback: () => downloadAndroidapk(context));
        };
      }
    } else {
      // 检查ios平台是否存在更新
      if (Contrast.contrastVersion(version, result["iosVersion"])) {
        checkResult["isUpdate"] = true;
        checkResult["downloadURL"] = result["iosDownloadURL"];
        checkResult["callback"] = () {
          Dialogs.confirmDialog(context,
              content: "新版本已经上线，是否更新？",
              confirmCallback: () => jumpAppStore(checkResult["downloadURL"]),
              cancelCallback: () => exit(0));
        };
      }
    }
  }

  // 返回结果
  return checkResult;
}

/// 跳转安卓下载界面
void downloadAndroidapk(BuildContext context) {
  // 跳转更新页面
  // print("跳转下载页面");
  Navigator.pushNamedAndRemoveUntil(context, '/updateview', (_) => false);
}

/// 跳转ios应用市场
/// * [url] String|必填|下载id
void jumpAppStore(String url) async {
  bool success = await RUpgrade.upgradeFromAppStore(url);
  if (!success) {
    ToastWidget.result(type: false, title: "无法跳转应用市场");
  }
}
